﻿/**
 * @name umi 的路由配置
 * @description 只支持 path,component,routes,redirect,wrappers,name,icon 的配置
 * @param path  path 只支持两种占位符配置，第一种是动态参数 :id 的形式，第二种是 * 通配符，通配符只能出现路由字符串的最后。
 * @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径，也可以是相对路径，如果是相对路径，会从 src/pages 开始找起。
 * @param routes 配置子路由，通常在需要为多个路径增加 layout 组件时使用。
 * @param redirect 配置路由跳转
 * @param wrappers 配置路由组件的包装组件，通过包装组件可以为当前的路由组件组合进更多的功能。 比如，可以用于路由级别的权限校验
 * @param name 配置路由的标题，默认读取国际化文件 menu.ts 中 menu.xxxx 的值，如配置 name 为 login，则读取 menu.ts 中 menu.login 的取值作为标题
 * @param icon 配置路由的图标，取值参考 https://ant.design/components/icon-cn， 注意去除风格后缀和大小写，如想要配置图标为 <StepBackwardOutlined /> 则取值应为 stepBackward 或 StepBackward，如想要配置图标为 <UserOutlined /> 则取值应为 user 或者 User
 * @doc https://umijs.org/docs/guides/routes
 */
// import merchantManagerShopApi from '@/pages/MerchantManager/Shop/request';
import type { MenuDataItem } from '@umijs/route-utils';

export const defaultRoutes: MenuDataItem[] = [
  {
    path: '/user',
    name: 'user',
    layout: false,
    routes: [
      {
        name: 'login',
        path: '/user/login',
        component: './User/Login',
      },
    ],
  },
  {
    path: '/merchant-user',
    name: 'merchant-user',
    layout: false,
    routes: [
      {
        name: 'merchant-user-login',
        path: '/merchant-user/login',
        component: './User/Login',
      },
    ],
  },
];
export const userRotues: MenuDataItem[] = [
  {
    name: 'customer',
    path: '/customer',
    icon: 'UserSwitch',
    // access: 'customer',
    routes: [
      {
        path: '/customer',
        redirect: '/customer/list',
      },
      {
        path: '/customer/group',
        name: 'customer-group-management',
        // access: 'customer-group-management',
        component: './Customer/GroupCustomer',
      },
      {
        path: '/customer/list',
        name: 'customer-list-management',
        // access: 'customer-list-management',
        component: './Customer/ListManagement',
      },
      {
        path: '/customer/points-transfer',
        name: 'customer-points-transfer',
        // access: 'customer-points-transfer',
        component: './Customer/PointsTransfer',
      },
      {
        path: '/customer/points-withdrawal',
        name: 'customer-points-withdrawal',
        // access: 'customer-points-withdrawal',
        component: './Customer/PointsWithdrawal',
      },
    ],
  },
  {
    name: 'goods',
    path: '/goods',
    icon: 'Shop',
    // access: 'goods',
    routes: [
      {
        path: '/goods',
        redirect: '/goods/classify-management',
      },
      {
        path: '/goods/classify-management',
        name: 'classify-management',
        // access: 'goods-classify-management',
        component: './Goods/ClassifyManagement',
      },
      {
        path: '/goods/list-management',
        name: 'list-management',
        // access: 'goods-list-management',
        component: './Goods/ListManagement',
      },
      {
        path: '/goods/inventory-management',
        name: 'inventory-management',
        // access: 'goods-inventory-management',
        component: './Goods/InventoryManagement',
      },
      {
        path: '/goods/inventory-management/warehouse/:id',
        name: `inventory-management-warehouse`,
        component: './Goods/InventoryManagement/Operate',
        hideInMenu: true,
      },
      {
        path: '/goods/inventory-management/shipment/:id',
        name: `inventory-management-shipment`,
        component: './Goods/InventoryManagement/Operate',
        hideInMenu: true,
      },
      {
        path: '/goods/inventory-log',
        name: 'inventory-log',
        // access: 'goods-inventory-log',
        component: './Goods/InventoryLog',
      },
    ],
  },
  {
    name: 'shop',
    path: '/shop',
    icon: 'Shop',
    // access: 'shop',
    routes: [
      {
        path: '/shop',
        redirect: '/shop/list-management',
      },
      {
        path: '/shop/classify-management',
        name: 'classify-management',
        // access: 'shop-classify-management',
        component: './Shop/ClassifyManagement',
      },
      {
        path: '/shop/group-management',
        name: 'shop-group-management',
        // access: 'shop-group-management',
        component: './Shop/GroupBaseManagement',
      },

      {
        path: '/shop/list-management',
        name: 'list-management',
        // access: 'shop-list-management',
        component: './Shop/ListManagement',
      },
    ],
  },
  {
    name: 'merchant-account',
    path: '/merchant-account',
    icon: 'UserSwitch',
    // access: 'merchant-account',
    routes: [
      {
        path: '/merchant-account',
        redirect: '/merchant-account/merchant-user/user-management',
      },
      {
        path: '/merchant-account/group-user',
        name: 'group-user',
        // access: 'group-user',
        routes: [
          {
            path: '/merchant-account/group-user/user-management',
            name: 'user-management',
            // access: 'user-management',
            component: './MerchantAccount/GroupUser/UserManagement',
          },
          {
            path: '/merchant-account/group-user/write-off',
            name: 'write-off',
            // access: 'user-management',
            component: './MerchantAccount/GroupUser/WriteOff',
          },
          {
            path: '/merchant-account/group-user/withdrawal',
            name: 'withdrawal',
            // access: 'user-management',
            component: './MerchantAccount/GroupUser/Withdrawal',
          },
          {
            path: '/merchant-account/group-user/funds',
            name: 'funds',
            // access: 'user-management',
            component: './MerchantAccount/GroupUser/Funds',
          },
        ],
      },
      {
        path: '/merchant-account/merchant-user',
        name: 'merchant-user',
        // access: 'merchant-user',
        routes: [
          {
            path: '/merchant-account/merchant-user/user-management',
            name: 'user-management',
            // access: 'user-management',
            component: './MerchantAccount/MerchantUser/UserManagement',
          },
          {
            path: '/merchant-account/merchant-user/write-off',
            name: 'write-off',
            // access: 'user-management',
            component: './MerchantAccount/MerchantUser/WriteOff',
          },
          {
            path: '/merchant-account/merchant-user/withdrawal',
            name: 'withdrawal',
            // access: 'user-management',
            component: './MerchantAccount/MerchantUser/Withdrawal',
          },
          {
            path: '/merchant-account/merchant-user/funds',
            name: 'funds',
            // access: 'user-management',
            component: './MerchantAccount/MerchantUser/Funds',
          },
        ],
      },
    ],
  },
  {
    name: 'record',
    path: '/record',
    // access: 'record',
    icon: 'Apartment',
    routes: [
      {
        path: '/record/group-list',
        name: 'group-list',
        // access: 'user-management',
        component: './Order/GroupList',
      },
      {
        path: '/record/list-management',
        name: 'list-management',
        // access: 'user-management',
        component: './Order/ListManagement',
      },
    ],
  },
  {
    name: 'organization',
    path: '/organization',
    // access: 'organization',
    icon: 'Apartment',
    routes: [
      {
        path: '/organization',
        redirect: '/organization/user-management',
      },
      {
        path: '/organization/group-base-management',
        name: 'group-base-management',
        // access: 'group-base-management',
        component: './Organization/GroupBaseManagement',
      },
      {
        path: '/organization/subsidiary-base-management',
        name: 'subsidiary-base-management',
        // access: 'subsidiary-base-management',
        component: './Organization/SubsidiaryBaseManagement',
      },
      {
        path: '/organization/department-management',
        name: 'department-management',
        // access: 'department-management',
        component: './Organization/DepartmentManagement',
      },
      {
        path: '/organization/role-management',
        name: 'role-management',
        // access: 'role-management',
        component: './Organization/RoleManagement',
      },
      {
        path: '/organization/user-management',
        name: 'user-management',
        // access: 'user-management',
        component: './Organization/UserManagement',
      },
      {
        path: '/organization/menu-management',
        name: 'menu-management',
        // access: 'menu-management',
        component: './Organization/MenuManagement',
      },
      {
        path: '/organization/operation-log',
        name: 'operation-log',
        // access: 'operation-log',
        component: './Organization/OperationLog',
      },
    ],
  },
  {
    path: '/',
    redirect: '/user/login',
  },
  {
    path: '*',
    layout: false,
    component: './404',
  },
];
export const merchantRoutes: MenuDataItem[] = [
  {
    name: 'merchant-manager',
    path: '/merchant-manager',
    icon: 'UserSwitch',
    // access: 'merchant',
    routes: [
      {
        path: `/merchant-manager/shop/:id`,
        name: `shop-id`,
        component: './MerchantManager/Shop/[id]',
      },
    ],
  },
];

export default defaultRoutes.concat(userRotues).concat(merchantRoutes);
